import scrapy

from ..items import DangdangItem


class DdSpider(scrapy.Spider):
    name = "dd"
    allowed_domains = ["category.dangdang.com"]
    start_urls = ["https://category.dangdang.com/cp01.21.00.00.00.00.html"]

    def parse(self, response):
        # 基础路径
        base_url = 'https://category.dangdang.com/pg'
        page = 1

        # pipeline 用来下载数据
        # items 定义数据结构
            # src = //ul[@id="component_59"]//li//img/@src
            # alt = //ul[@id="component_59"]//li//img/@alt
            # price = //ul[@id="component_59"]//li//p[@class="price"]/span[@class="search_now_price"]/text()
            # 所有的 seletor 对象 都可以再次调用 xpath 方法
        li_list = response.xpath('//ul[@id="component_59"]//li')
        for li in li_list:
            src = li.xpath('.//img/@data-original').extract_first()
            if not src:
                src = li.xpath('.//img/@src').extract_first()  # 第一张图片不需要懒加载
            name = li.xpath('.//img/@alt').extract_first()
            price = li.xpath('.//p[@class="price"]/span[@class="search_now_price"]/text()').extract_first()
            book = DangdangItem(src=src, name=name, price=price)
            # 获取一个 book 就将 book 交给 pipelines
            yield book

        if page < 3:
            page += 1
            url = base_url + str(page) + '-cp01.21.00.00.00.00.html'
            # 怎么去调用 parse 方法
            # scrapy.Request 就是 get 请求
                # url 就是请求地址
                # callback 就是你要执行的函数
            yield scrapy.Request(url=url, callback=self.parse)
